#ifndef _DECORATOR_H
#define _DECORATOR_H

#include "Component.h"

class Decorator : public Component
{
public:
	Decorator(Component* cmp);
	virtual ~Decorator();

	virtual void Print() = 0;

protected:
	Component* m_cmp;
};

class ConcreteDecoratorA : public Decorator
{
public:
	ConcreteDecoratorA(Component* cmp);
	~ConcreteDecoratorA();

	void Print();
	void Another();
};

class ConcreteDecoratorB : public Decorator
{
public:
	ConcreteDecoratorB(Component* cmp);
	~ConcreteDecoratorB();

	void Print();
	void Another();
};

#endif